// bind 返回一个函数： 可以返回一个匿名函数来实现
// 并且改变 this 的指向： 基于 apply或者是 call 去实现一个

var obj = {
  value: 1
}

function func(x, y) {
  console.log(this.value)
  console.log('x', x)
  console.log('y', y)
}

var reFun = func.bind(obj)

reFun()

Function.prototype.mybind = function (object, ...arg) {
  // object = this
  var self = this
  return function () {
    self.call(object, ...arg)
  }
}



var bindFun = func.mybind(obj, 1, 2)
bindFun()